package com.hqhy.like.front.order.dao.persist.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.hqhy.like.front.order.pojo.entity.Order;
import com.hqhy.like.front.order.pojo.param.OrderQueryParam;
import com.hqhy.like.front.order.pojo.param.OrderSearchParam;
import com.hqhy.like.front.order.pojo.vo.OrderStandardVO;
import com.hqhy.like.front.order.pojo.vo.OrderTableVO;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 处理订单数据的Mapper接口
 */
@Repository
public interface OrderMapper extends BaseMapper<Order> {

    /**
     * 根据订单ID查询订单详情
     * @param orderId 订单ID
     * @return 订单详情
     */
    OrderStandardVO getStandardById(Long orderId);

    /**
     * 根据订单编号查询订单桌台数据
     *
     * @param orderNo 订单编号
     * @return 订单桌台数据
     */
    OrderTableVO getStandardByOrderNo(String orderNo);

    /**
     * 根据下单方式查询已接单和待取餐（orderState=1，2，3）的订单
     *
     * @param orderMethod 下单方式
     * @return 订单列表
     */
    List<OrderStandardVO> listAllCheckByMethod(Integer orderMethod);

    /**
     * 根据条件查询订单
     *
     * @param orderSearchParam 查询订单详情的参数
     * @return 订单列表
     */
    List<OrderStandardVO> searchByCondition(OrderSearchParam orderSearchParam);

    /**
     * 查询订单桌台数据
     *
     * @param orderQueryParam 查询订单桌台的参数
     * @return 订单桌台列表
     */
    List<OrderTableVO> listOrderForTable(OrderQueryParam orderQueryParam);

    /**
     * 根据下单方式和订单状态等查询订单
     *
     * @param orderSearchParam 查询订单详情的参数
     * @return 订单列表
     */
    List<OrderStandardVO> listByStateAndMethod(OrderSearchParam orderSearchParam);
}

